SetTitleMatchMode 2
DetectHiddenWindows, On

isMoved := false
sensorWinNo := 99
initSensor()

;*.ahkファイルをサクラエディタで保存したらReload
#IfWinActive, .ahk(更新) - sakura
	~^s:: Reload
#IfWinActive

RButton::

	isMoved := false

	;ポインタの周りにセンサーを表示
	showSensor()

	;ボタン押上を待つ
	KeyWait, RButton

	;センサーを隠す
	hideSensor()

	;ポインタの座標による処理
	if (isMoved) {
		;動いていたら、右ボタンの押下扱い
		MouseClick, R
	} else {
		;動いていない場合、中ボタンの押下扱い
		MouseClick, M
	}
return

initSensor() {
	global sensorWinNo

	;ドーナツ状の画像を載せ、画像以外を透過したウィンドウを用意
	Gui, %sensorWinNo%:Add, Picture, X0 Y0 HwndCtrol, %A_ScriptDir%\circle.png

	GUI, %sensorWinNo%:+AlwaysOnTop +ToolWindow +LastFound
	WinSet, TransColor, F0F0F0 255
	GUI, %sensorWinNo%:-Caption

	; イベントハンドラの設定
	OnMessage(0x200, "OverSensor")		;0x200:mouse over
}

OverSensor(wParam, lParam) {
	global isMoved
	global sensorWinNo

	; ポインタがセンサーに引っかかった場合、動いたとしてフラグを立てる
	; このイベントはマウスボタン押し下げ中にのみ割り込みで発生する(ハズ)
	if (A_Gui=sensorWinNo) {
		isMoved := true
		GUI, %sensorWinNo%:Hide
	}
}

showSensor() {
	global sensorWinNo

	; センサーウィンドウの中心がポインタの位置に来るように調整して表示
	CoordMode,Mouse,Screen
	MouseGetPos, x, y

	size := 14

	x -= size/2
	y -= size/2
	GUI, %sensorWinNo%:Show, X%x% Y%y% W%size% H%size% NA
}

hideSensor() {
	global sensorWinNo

	GUI, %sensorWinNo%:Hide
}

